import { IPSAppDEDataSet } from '../dataentity/ipsapp-dedata-set';
import { IPSAppDEField } from '../dataentity/ipsapp-defield';
import { IPSAppDataEntity } from '../dataentity/ipsapp-data-entity';
import { IPSAppViewMsg } from './ipsapp-view-msg';
import { IPSDEDataSetViewMsg } from '../../view/ipsdedata-set-view-msg';

/**
 *
 * 继承父接口类型值[1]
 * @export
 * @interface IPSAppDEDataSetViewMsg
 */
export interface IPSAppDEDataSetViewMsg extends IPSAppViewMsg, IPSDEDataSetViewMsg {
  /**
   * 缓存范围
   * @description 值模式 [视图消息缓存范围] {GLOBAL：全局 }
   * @type {( string | 'GLOBAL')}
   */
  cacheScope: string | 'GLOBAL';

  /**
   * 缓存标记2应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  getCacheTag2PSAppDEField(): IPSAppDEField | null;

  /**
   * 缓存标记2应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  get cacheTag2PSAppDEField(): IPSAppDEField | null;

  /**
   * 缓存标记2应用实体属性对象（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getCacheTag2PSAppDEFieldMust(): IPSAppDEField;

  /**
   * 缓存标记应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  getCacheTagPSAppDEField(): IPSAppDEField | null;

  /**
   * 缓存标记应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  get cacheTagPSAppDEField(): IPSAppDEField | null;

  /**
   * 缓存标记应用实体属性对象（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getCacheTagPSAppDEFieldMust(): IPSAppDEField;

  /**
   * 缓存超时
   * @type {number}
   */
  cacheTimeout: number;

  /**
   * 消息内容应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  getContentPSAppDEField(): IPSAppDEField | null;

  /**
   * 消息内容应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  get contentPSAppDEField(): IPSAppDEField | null;

  /**
   * 消息内容应用实体属性对象（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getContentPSAppDEFieldMust(): IPSAppDEField;

  /**
   * 显示位置应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  getMsgPosPSAppDEField(): IPSAppDEField | null;

  /**
   * 显示位置应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  get msgPosPSAppDEField(): IPSAppDEField | null;

  /**
   * 显示位置应用实体属性对象（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getMsgPosPSAppDEFieldMust(): IPSAppDEField;

  /**
   * 消息类型标记应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  getMsgTypePSAppDEField(): IPSAppDEField | null;

  /**
   * 消息类型标记应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  get msgTypePSAppDEField(): IPSAppDEField | null;

  /**
   * 消息类型标记应用实体属性对象（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getMsgTypePSAppDEFieldMust(): IPSAppDEField;

  /**
   * 显示次序应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  getOrderValuePSAppDEField(): IPSAppDEField | null;

  /**
   * 显示次序应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  get orderValuePSAppDEField(): IPSAppDEField | null;

  /**
   * 显示次序应用实体属性对象（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getOrderValuePSAppDEFieldMust(): IPSAppDEField;

  /**
   * 应用实体数据集合对象
   *
   * @type {IPSAppDEDataSet}
   */
  getPSAppDEDataSet(): IPSAppDEDataSet | null;

  /**
   * 应用实体数据集合对象
   *
   * @type {IPSAppDEDataSet}
   */
  get psAppDEDataSet(): IPSAppDEDataSet | null;

  /**
   * 应用实体数据集合对象（必须存在）
   *
   * @type {IPSAppDEDataSet}
   */
  getPSAppDEDataSetMust(): IPSAppDEDataSet;

  /**
   * 应用实体对象
   *
   * @type {IPSAppDataEntity}
   */
  getPSAppDataEntity(): IPSAppDataEntity | null;

  /**
   * 应用实体对象
   *
   * @type {IPSAppDataEntity}
   */
  get psAppDataEntity(): IPSAppDataEntity | null;

  /**
   * 应用实体对象（必须存在）
   *
   * @type {IPSAppDataEntity}
   */
  getPSAppDataEntityMust(): IPSAppDataEntity;

  /**
   * 移除标志应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  getRemoveFlagPSAppDEField(): IPSAppDEField | null;

  /**
   * 移除标志应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  get removeFlagPSAppDEField(): IPSAppDEField | null;

  /**
   * 移除标志应用实体属性对象（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getRemoveFlagPSAppDEFieldMust(): IPSAppDEField;

  /**
   * 抬头语言标记应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  getTitleLanResTagPSAppDEField(): IPSAppDEField | null;

  /**
   * 抬头语言标记应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  get titleLanResTagPSAppDEField(): IPSAppDEField | null;

  /**
   * 抬头语言标记应用实体属性对象（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getTitleLanResTagPSAppDEFieldMust(): IPSAppDEField;

  /**
   * 抬头应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  getTitlePSAppDEField(): IPSAppDEField | null;

  /**
   * 抬头应用实体属性对象
   *
   * @type {IPSAppDEField}
   */
  get titlePSAppDEField(): IPSAppDEField | null;

  /**
   * 抬头应用实体属性对象（必须存在）
   *
   * @type {IPSAppDEField}
   */
  getTitlePSAppDEFieldMust(): IPSAppDEField;

  /**
   * 支持缓存
   * @type {boolean}
   */
  enableCache: boolean;
}
